/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jprojetopharmalink;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import static jprojetopharmalink.Principal.con;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 *
 * @author Rodrigo Toma
 */
class MinhaThread extends Thread {

        public String run(String caminhoEnvio, String textField, File[] arquivo) {
        
        LerCaminho lc = new LerCaminho();
        Update u = new Update();
        String idPedido = null;      
        String montaPedido = null;          
        
        lc.RetornoCaminho();
        caminhoEnvio = lc.retcaminhoEnvio;

        String hora = "";
        String nome, datapedido, datapedidook, Texto = "\n";
        
        if (!textField.equals("")) {
            File diretorio = null;

            diretorio = new File(caminhoEnvio); // ajfilho é uma pasta!

            if (!diretorio.exists()) {
                diretorio.mkdirs(); //mkdir() cria somente um diretório, mkdirs() cria diretórios e subdiretórios.
            }
            
            try {
                
                
                for (int arq = 0; arq < arquivo.length; arq++) {

                    
                  //  JOptionPane.showMessageDialog(null, "aaaa");
                    
                    Texto = Texto + "--------------------------- LEITURA DE " + arquivo[arq].getName() + "---------------------------\n\n";
                   
                    boolean primeiraEmpresa = true;
                    boolean criouArquivo = false;
                    String cnpj = "";
                    String cnpjdavez = "";
                    int fixo = 1;
                    int QtdeFixo7 = 0;

                    Workbook workbook = Workbook.getWorkbook(new File(arquivo[arq].getPath()));

                    Sheet sheet = workbook.getSheet(0);
                    int linhas = sheet.getRows();
                    System.out.println("Iniciando a leitura da planilha XLS:");

                    File fw = null;
                    FileOutputStream fos = null;

                    for (int i = 10; i < linhas; i++) {
                  
                        Cell a1 = sheet.getCell(0, i); // nome
                        Cell a2 = sheet.getCell(1, i); //cnpj
                        Cell a3 = sheet.getCell(2, i);
                        Cell a4 = sheet.getCell(3, i);
                        Cell a5 = sheet.getCell(4, i);
                        Cell a6 = sheet.getCell(5, i);//numero pedido
                        Cell a7 = sheet.getCell(6, i); //datapedido
                        Cell a8 = sheet.getCell(7, i);//codigo barras
                        Cell a9 = sheet.getCell(8, i);//nome produto
                        Cell a10 = sheet.getCell(9, i);//fabricante
                        Cell a11 = sheet.getCell(10, i); //qtde
                        Cell a15 = sheet.getCell(14, i); //codigo do distribuidor

                        String as1 = a1.getContents(); //nome
                        String as2 = a2.getContents(); //cnpj
                        String as3 = a3.getContents();
                        String as4 = a4.getContents();
                        String as5 = a5.getContents();
                        String as6 = a6.getContents(); //numero pedido
                        String as7 = a7.getContents(); //data pedido
                        String as8 = a8.getContents(); //codigo barras
                        String as9 = a9.getContents();//nome produto
                        String as10 = a10.getContents();//fabricante
                        String as11 = a11.getContents(); //qtde
                        String as15 = a15.getContents(); //codigo do distribuidor

                        cnpj = as2.replaceAll("\\.", "");
                        cnpj = cnpj.replaceAll("-", "");

                        int ini = as1.indexOf("(");
                        int fim = as1.indexOf(")");

                        if (!cnpj.equals("")) {

                            datapedido = as7.substring(0, 10);

                            datapedidook = datapedido.substring(6);
                            datapedidook = datapedidook + datapedido.substring(3, 5);
                            datapedidook = datapedidook + datapedido.substring(0, 2);

                            hora = as7.substring(11);
                            nome = as1.substring(ini + 2, fim - 1);

                            if (nome.equals("")) {
                                nome = "Sem Nome";
                            }

                            if (primeiraEmpresa) {
                                cnpjdavez = cnpj;
                                primeiraEmpresa = false;
                            }

                            if (!cnpjdavez.equals(cnpj)) {

                                if (QtdeFixo7 < 10) {
                                    montaPedido += "80" + QtdeFixo7 + "0000000000000000000000000000" + System.getProperty("line.separator");

                                } else {
                                    montaPedido += "8" + QtdeFixo7 + "0000000000000000000000000000" + System.getProperty("line.separator");
                                }
                                fixo = 1;
                                criouArquivo = false;
                                fos = new FileOutputStream(fw, false);
                                fos.write((montaPedido).getBytes());
                                fos.close();
                            }

                            if (!criouArquivo) {

                                cnpjdavez = cnpj;
                                QtdeFixo7 = 0;

                                hora = hora.replaceAll(":", "");
                                fw = new File(caminhoEnvio + "\\PHL30" + cnpj + "_" + datapedidook + hora + "00.TXT");
                                
                                
                                idPedido = u.getId("id_pedido");
                                
                                String arquivoGerado = "PHL30" + cnpj + "_" + datapedidook + hora + "00";
                                Date data = new Date(System.currentTimeMillis()); 
                                SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd"); 
                                String dataFormatada = formatador.format(data);
                                String NumPedido = as6.replaceAll("/", "");
                                
                                String sql = "insert into pedido values('"+idPedido+"','"+NumPedido+"','"+arquivoGerado+"','"+dataFormatada+"','"+as1+"')";
                                
                             
                                
                                int intid = Integer.parseInt(idPedido) + 1;
                                u.setUpdateControle("update controle set valor = '" + intid + "' where campo = 'id_pedido'");
                                
                                Texto = Texto + "Loja: " + nome + "\n";
                                Texto = Texto + "Caminho do arquivo:\n";
                                Texto = Texto + caminhoEnvio + "\\PHL30" + cnpj + "_" + datapedidook + hora + "00.TXT\n\n";

                                
                            }

                            if (fixo == 1) {
                                montaPedido += "1" + cnpj + "1000000000000030" + System.getProperty("line.separator");
                                fixo = 2;
                            }
                            if (fixo == 2) {
                                montaPedido += "2000000000000000000000000000000" + System.getProperty("line.separator");
                                fixo = 3;
                            }
                            if (fixo == 3) {
                                montaPedido += "3000000000000000000000000000000" + System.getProperty("line.separator");
                                fixo = 4;
                            }
                            if (fixo == 4) {

                                String NumPedido = as6.replaceAll("/", "");
                                int tamanho = NumPedido.length();
                                for (int j = tamanho; j < 15; j++) {
                                    NumPedido = "0" + NumPedido;
                                }

                                montaPedido += "4" + NumPedido + "000000000000000" + System.getProperty("line.separator");
                                fixo = 5;
                            }
                            if (fixo == 5) {
                                datapedido = datapedido.replaceAll("/", "");
                                montaPedido += "5" + datapedido + "0000000000000000000000" + System.getProperty("line.separator");
                                fixo = 6;
                            }
                            if (fixo == 6) {
                                hora = hora.replaceAll(":", "");
                                montaPedido += "6" + hora + "00000000000000000000000000" + System.getProperty("line.separator");
                                fixo = 7;
                            }
                            if (fixo == 7) {
                                String idPedidoItem;
                                idPedidoItem = u.getId("id_pedido_item");
                                
                                String strQtde = as11.replaceAll(",", "\\.");
                                double dlqtde = Double.parseDouble(strQtde);
                                int qtde = (int) dlqtde;

                                strQtde = String.valueOf(qtde);
                                int tamanho = strQtde.length();
                                for (int j = tamanho; j < 4; j++) {
                                    strQtde = "0" + strQtde;
                                }
                                montaPedido += "7" + as8 + strQtde + "0000000000000" + System.getProperty("line.separator");
                                String sql = "insert into pedido_item values ('"+idPedidoItem+"','"+as9+"','"+as8+"','"+strQtde+"','"+as10+"','"+idPedido+"')";
                                
                                int intid = Integer.parseInt(idPedidoItem) + 1;
                                u.setUpdateControle("update controle set valor = '" + intid + "' where campo = 'id_pedido_item'");
                                
                                QtdeFixo7 += 1;
                                criouArquivo = true;
                            }

                        }

                    }

                    workbook.close();

                    if (QtdeFixo7 < 10) {
                        montaPedido += "80" + QtdeFixo7 + "0000000000000000000000000000" + System.getProperty("line.separator");
                        fos = new FileOutputStream(fw, false);
                        fos.write((montaPedido).getBytes());
                        fos.close();
                    } else {
                        montaPedido += "8" + QtdeFixo7 + "0000000000000000000000000000" + System.getProperty("line.separator");
                        fos = new FileOutputStream(fw, false);
                        fos.write((montaPedido).getBytes());
                        fos.close();
                    }
                }
                return Texto;
                
            } catch (IOException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            } catch (BiffException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
            return Texto;
    }
}